package com.aniu.cameramanager.util;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class CalendarUtil {
    private static final String TAG = CalendarUtil.class
            .getName();
    private static CalendarUtil cswdu = null;

    private CalendarUtil() {
    }

    public static CalendarUtil getInstance() {
        if (cswdu == null) {
            cswdu = new CalendarUtil();
        }
        return cswdu;
    }

  /**
   * @title 获取周六和周日是工作日的情况（手工维护）
   *  注意，日期必须写全：
   *    2015-1-4必须写成：2015-01-04
   * @author
   * @return 周末是工作日的列表
   */
    private List<String> getWeekendIsWorkDateList(){
        List<String> list = new ArrayList<String>();
        list.add("2021-05-08");
        return list;
    }

    private List<String> getWeekdayIsHolidayList(){
        List<String> list = new ArrayList<String>();
        list.add("2021-05-03");
        list.add("2021-05-04");
        return list;
  }

    /**
    * @title 判断是否为工作日
    * @detail 工作日计算:
    *      1、正常工作日，并且为非假期
    *      2、周末被调整成工作日
    * @author
    * @param calendar 日期
    * @return 是工作日返回true，非工作日返回false
    */
    public boolean isWorkDay(Calendar calendar){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        if (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY
           && calendar.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY){
            //平时
            return !getWeekdayIsHolidayList().contains(sdf.format(calendar.getTime()));

        } else {
         //周末
            return getWeekendIsWorkDateList().contains(sdf.format(calendar.getTime()));
        }
    }

    public void getNextWorkDay(Calendar calendar) {
        calendar.add(Calendar.DAY_OF_YEAR, 1);

        while (!(isWorkDay(calendar))) {
            calendar.add(Calendar.DAY_OF_YEAR, 1);
        }
    }
}
